## 
## Copyright(c) 2009 Syntext, Inc. All Rights Reserved.
## Contact: info@syntext.com, http://www.syntext.com
## 
## This file is part of Syntext Serna XML Editor.
## 
## COMMERCIAL USAGE
## Licensees holding valid Syntext Serna commercial licenses may use this file
## in accordance with the Syntext Serna Commercial License Agreement provided
## with the software, or, alternatively, in accorance with the terms contained
## in a written agreement between you and Syntext, Inc.
## 
## GNU GENERAL PUBLIC LICENSE USAGE
## Alternatively, this file may be used under the terms of the GNU General 
## Public License versions 2.0 or 3.0 as published by the Free Software 
## Foundation and appearing in the file LICENSE.GPL included in the packaging 
## of this file. In addition, as a special exception, Syntext, Inc. gives you
## certain additional rights, which are described in the Syntext, Inc. GPL 
## Exception for Syntext Serna Free Edition, included in the file 
## GPL_EXCEPTION.txt in this package.
## 
## You should have received a copy of appropriate licenses along with this 
## package. If not, see <http://www.syntext.com/legal/>. If you are unsure
## which license is appropriate for your use, please contact the sales 
## department at sales@syntext.com.
## 
## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
## 
#!/usr/bin/python2

import sys, os, re

classdecl_re = re.compile(r'^class\s+(?P<classname>\w+)\s*:\s*public', re.M)

try:
    if len(sys.argv) < 3:
	print >> sys.stderr, "usage:", sys.argv[0], "<export directive> <header file>"
	sys.exit(2)
	
    export, file = sys.argv[1:3]
    fcontent = open(file, "rb").read()
    
    fcontent, nsubs = classdecl_re.subn("class " + export + " \g<classname> : public", fcontent)
    if nsubs > 0:
	newfile, bakfile = file + '.new', file + '.bak'
	open(newfile, "wb").write(fcontent)
	os.rename(file, bakfile)
	os.rename(newfile, file)
	os.unlink(bakfile)

except SystemExit:
    pass
except Exception, e:
    print >> sys.stderr, str(e), "at line", sys.exc_traceback.tb_lineno
    sys.exit(1)
